home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 31 / Amiga Format CD31 (1998-09-02)(Future Publishing)(GB)(Track 1 of 2)[!][issue 1998-10].iso / -websites- / sasg / dfa / rexx / filofaxtex.lzh / filofaxtex.dfa
Text File  |  1995-12-16  |  5KB  |  232 lines

  1. /* $Revision Header built automatically *************** (do not edit) ************
  2. **
  3. ** © Copyright by Dirk Federlein
  4. **
  5. ** File             : Work:programming/dfa/rexx/FiloFaxTeX.dfa
  6. ** Created on       : Dienstag, 25.10.94 21:40:03
  7. ** Created by       : Dirk Federlein
  8. ** Current revision : V1.2
  9. **
  10. **
  11. ** Purpose
  12. ** -------
  13. **     Outputs a special tex formatted file which contains
  14. **     all selected addresses. The format fits the usual
  15. **     fileofax pages (size 96x172mm), but should be
  16. **     used together with dvidvi to make more than 1 page fit
  17. **     on one page.
  18. **
  19. ** Revision V1.2
  20. ** --------------
  21. ** created on Dienstag, 25.10.94 22:54:53  by  Dirk Federlein.   LogMessage :
  22. **   - Now starts with a new 'page', if a "new" letter begins.
  23. **     For this a SORTED address file is needed!
  24. **
  25. ** Revision V1.1
  26. ** --------------
  27. ** created on Dienstag, 25.10.94 22:53:49  by  Dirk Federlein.   LogMessage :
  28. **   - Now prints the generated file, so you don't have to
  29. **     print it manually:-)
  30. **
  31. **     Print with:
  32. **
  33. **     dvidvi -m 3:0,1(9.5cm,0in),2(19cm,0in) testfilofax.dvi out.dvi
  34. **     dvips -O0cm,-1cm -t landscape out.dvi
  35. **     (dviprint works as well, select "landscape ON")
  36. **
  37. ** Revision V1.0
  38. ** --------------
  39. ** created on Dienstag, 25.10.94 21:40:03  by  Dirk Federlein.   LogMessage :
  40. **     --- Initial release ---
  41. **
  42. *********************************************************************************/
  43.  
  44. tabchar = '09'X
  45. cr    = '0A'X
  46.  
  47. TEXFILENAME        = "ram:Filofax.tex"
  48. DVIFILENAME        = "ram:Filofax.dvi"
  49. CONVERTFILENAME    = "ram:CFilofax.dvi"
  50. HEADERNAME        = "TeX:templates/FiloFaxAdr.tex"
  51.  
  52. TeX = 'Tex:bin/virtex'
  53. TeXFormat = '&glplain'
  54.  
  55. pagelines = 0
  56.  
  57. options results
  58.  
  59. address command "copy" HEADERNAME TEXFILENAME
  60.  
  61. address "DFA"
  62.  
  63. if open('exfh', TEXFILENAME ,'A') then
  64. do
  65.     pageitems = 0
  66.  
  67.     numchars=writech('exfh', '\addressheader' (cr))
  68.  
  69.         /*
  70.          * Lock DFA gui
  71.          */
  72.  
  73.     gui input off output off
  74.  
  75.         /*
  76.          * Get first address
  77.          */
  78.  
  79.     FIRST STEM ADR.
  80.  
  81.         /*
  82.          * Keep track of 1st letter of surname
  83.          * for paging...
  84.          */
  85.  
  86.     CurrentLetter    = left(ADR.ADDRESS.2,1)
  87.     LastLetter        = left(ADR.ADDRESS.2,1)
  88.  
  89.         /*
  90.          * Generate .tex file
  91.          */
  92.  
  93.     do while RC = 0
  94.  
  95.             /*
  96.              * Begin a new page if the surname starts
  97.              * with a "new" letter
  98.              */
  99.  
  100.         if (pageitems > 0) & (CurrentLetter ~= LastLetter) then
  101.         do
  102.             numchars=writech('exfh', '\newpage' (cr))
  103.             numchars=writech('exfh', '\addressheader' (cr))
  104.  
  105.             pageitems = 0
  106.  
  107.         end
  108.  
  109.         numchars=writech('exfh', '\addressbox{')
  110.  
  111.             /*
  112.              * Used address fields are:
  113.              *     - first name
  114.              *     - surname
  115.              *     - street
  116.              *     - ZIP
  117.              *     - City
  118.              *     - Phone
  119.              *     - Fax
  120.              *     - Comment
  121.              */
  122.  
  123.         if ADR.ADDRESS.1 ~= "" then
  124.             numchars=writech('exfh', ADR.ADDRESS.1||'}{' )
  125.         else
  126.             numchars=writech('exfh', '\ }{')
  127.  
  128.         if ADR.ADDRESS.2 ~= "" then
  129.             numchars=writech('exfh', ADR.ADDRESS.2||'}{')
  130.         else
  131.             numchars=writech('exfh', '\ }{')
  132.  
  133.         if ADR.ADDRESS.4 ~= "" then
  134.             numchars=writech('exfh', ADR.ADDRESS.4||'}{')
  135.         else
  136.             numchars=writech('exfh', '\ }{')
  137.  
  138.         if ADR.ADDRESS.5 ~= "" then
  139.             numchars=writech('exfh', ADR.ADDRESS.5||'}{')
  140.         else
  141.             numchars=writech('exfh', '\ }{')
  142.  
  143.         if ADR.ADDRESS.6 ~= "" then
  144.             numchars=writech('exfh', ADR.ADDRESS.6||'}{')
  145.         else
  146.             numchars=writech('exfh', '\ }{')
  147.  
  148.         if ADR.ADDRESS.10 ~= "" then
  149.             numchars=writech('exfh', ADR.ADDRESS.10||'}{')
  150.         else
  151.             numchars=writech('exfh', '---}{')
  152.  
  153.         if ADR.ADDRESS.11 ~= "" THEN
  154.             numchars=writech('exfh', ADR.ADDRESS.11||'}{')
  155.         else
  156.             numchars=writech('exfh', '\ }{')
  157.  
  158.             /*
  159.              * The comment may be up to 50 characters long
  160.              */
  161.  
  162.         if ADR.ADDRESS.15 ~= "" THEN
  163.             numchars=writech('exfh', left(ADR.ADDRESS.15,50)||'}'||(cr))
  164.         else
  165.             numchars=writech('exfh', '\ }' (cr) )
  166.  
  167.  
  168.             /*
  169.              * Up to 6 address items fit on one page
  170.              */
  171.  
  172.  
  173.         pageitems = pageitems + 1
  174.  
  175.         if pageitems = 6 then
  176.         do
  177.             numchars=writech('exfh', '\newpage' (cr))
  178.             numchars=writech('exfh', '\addressheader' (cr))
  179.  
  180.             pageitems = 0
  181.  
  182.         end
  183.  
  184.         next stem adr.
  185.  
  186.             /*
  187.              * Get 1st letter of the surname
  188.              */
  189.  
  190.         LastLetter        = CurrentLetter
  191.         CurrentLetter    = left(ADR.ADDRESS.2,1)
  192.  
  193.     end
  194.  
  195.         /*
  196.          * End of document
  197.          */
  198.  
  199.     numchars=writech('exfh', '\end{document}' (cr))
  200.  
  201.         /*
  202.          * Reactivate DFA gui
  203.          */
  204.  
  205.     gui input on output on
  206.  
  207.         /*
  208.          * Process generated file
  209.          */
  210.  
  211.     address command TeX TeXFormat TEXFILENAME
  212.  
  213.         /*
  214.          * Put 3 small pages on one A4 page (landscape needed)
  215.          */
  216.  
  217.     address command "dvidvi -m 3:0,1(9.5cm,0in),2(19cm,0in) " DVIFILENAME CONVERTFILENAME
  218.  
  219.         /*
  220.          * Output landscape pages
  221.          */
  222.  
  223.     address command "dvips -O0cm,-1cm -t landscape " CONVERTFILENAME
  224.  
  225. end
  226.  
  227. exit
  228.  
  229.  
  230.  
  231.  
  232.